VERSION >= v"0.4.0-dev+6521" && __precompile__()

module Devectorize

using Compat

export
    # fun_traits
    TFun,
    TCallSig,
    result_type,
    sqr, rcp, blend,

    # texpr

    DeError,

    TExpr, TEWise, TScalar, TGeneralVar, TFunCall,
    TEmpty, TNum, TScalarVar, TVar, TQVar, TGeneralScalar,
    TRef, TIndex, TRange, TColon, TInterval,
    TGeneralRef1, TGeneralRef2, TScalarRef1, TRef1D, TRef2D, TRefRow, TRefCol,
    TMap, TReduc, TColwiseReduc, TRowwiseReduc,
    TLValue, TRValue, TAssign, TBlock,

    texpr, tnum, tscalarvar, tvar, tqvar,
    tref, tcall, tassign, topassign, tblock,
    is_trivial_assignment, ju_expr,

    tmode, ScalarMode, EWiseMode, ReducMode,
    ColwiseReducMode, RowwiseReducMode,

    # scalar_backend

    ScalarContext, dump_devec,
    compile, @devec, @inspect_devec,

    # extensions

    @devec_transform

import Base.==, Base.!=

include("fun_traits.jl")
include("texpr.jl")
include("meta_tools.jl")

include("compile_base.jl")
include("scalar_backend.jl")

include("extensions.jl")

end
